The present invention relates to methods and systems for defining and handling user/computer interactions. In particular, the present invention relates to systems that resolve user input into a command or entity.
In most computer systems, applications are written to satisfy certain classes of tasks that users wish to perform. For example, calendar applications are written to allow users to schedule meetings, find meeting information such as the date of a meeting, the meeting's attendees, and the subject of the meeting. A map application, on the other hand, is written to fulfill tasks such as obtaining directions from one location to another and obtaining a graphical image showing the area around an address. Thus, each application represents a domain of tasks that the application is able to service.
Limiting applications to specific domains is desirable because it reduces the complexity of designing applications and allows users to pay for only those tasks that they wish to have supported.
However, because each application is only able to perform tasks within its limited domain, users must keep track of which applications can be used to perform a task and must interact with a number of different applications to perform a task that crosses domains. For example, if a user wants to e-mail directions for driving to their friend's house to everyone who was at a lunch meeting on Friday, they must interact with a map application to get the directions, interact with a calendar program to determine who was at the meeting, and interact with an e-mail program to find each attendees e-mail address. The user must then embed the directions from the map application in an e-mail and send the e-mail. Thus, having separate task domains for separate applications places a burden on the user.
As such, a system is needed that allows separate applications to be maintained but that also provides a framework in which cross-domain tasks may be executed utilizing a number of different applications without placing an increased burden on the user.